package com.xinqi.modules.course.course.mapper;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.xinqi.common.mybatis.data.repo.SuperMapper;
import com.xinqi.modules.course.course.dto.req.CourseQueryDTO;
import com.xinqi.modules.course.course.dto.rsp.CourseResultDTO;
import com.xinqi.modules.course.course.domain.CourseEntity;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 课程表数据层
 *
 * @author: system
 * @date: 2023/01/17
 */
@Mapper
public interface CourseMapper extends SuperMapper<CourseEntity> {

    IPage<CourseResultDTO> createdArchivePageList(Page<CourseEntity> page, @Param("dto") CourseQueryDTO dto);

    IPage<CourseResultDTO> joinedArchivePageList(Page<CourseEntity> page, @Param("dto") CourseQueryDTO dto);

    List<CourseResultDTO> findMyJoinedList(@Param("dto") CourseQueryDTO dto);

    List<CourseResultDTO> findMyCreatedList(@Param("dto") CourseQueryDTO dto);

    CourseResultDTO findByClassIdAndLoginId(@Param("classId") Long classId, @Param("studentId") Long studentId, @Param("isTeacher") Integer isTeacher);

    IPage<CourseResultDTO> findMyJoinedPage(Page<Object> page, @Param("dto") CourseQueryDTO dto);

    IPage<CourseResultDTO> findMyCreatedPage(Page<Object> page, @Param("dto") CourseQueryDTO dto);

    CourseResultDTO findByClassId(@Param("classId") Long classId);

    boolean insertAllSql(@Param("sql") String sql);

}
